package org.example.rabbitmq.provider.mq;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 消息发布者
 */
@Component
public class MessagePublisher {
    @Autowired
    AmqpTemplate amqpTemplate;
    @Autowired
    RabbitMqManager rabbitMqManager;

    /**
     * 发送消息
     *
     * @param tenantId
     * @param data
     */
    public void publish(String tenantId, String data) {
        // 如果Queue不存在，动态创建Queue，存在时也可能重复创建(多服务器实例)
        String queueName = rabbitMqManager.createQueueName(tenantId);
        String routingKey = rabbitMqManager.createRoutingKey(tenantId);
        rabbitMqManager.createQueueIfAbsent(queueName, routingKey);
        // 发送消息
        amqpTemplate.convertAndSend(RabbitMqManager.EXCHANGE_NAME, routingKey, data);
    }
}